
package eletrotudo3;

import java.util.Iterator;
import java.util.TreeSet;


public class Colecoes {
  private  TreeSet<Cliente> colecaoCliente= new TreeSet();
  private  TreeSet<Peca> colecaoPecas= new TreeSet();
  private  TreeSet<Fornecedor> colecaoFornecedor= new TreeSet();
  private  TreeSet<Funcionario> colecaoFuncionario=new TreeSet();
  private  TreeSet<Conserto> colecaoConserto=new TreeSet();

   
    public Colecoes() {
        // Coloca objetos nas coleções
        // Colecao de Clientes
        Endereco e= new Endereco("Rua", "String Bairro", "String Complemento",
                "String numero");
        Endereco e1= new Endereco("Rua da amargura", "Bairro baixo", "Complemento Feio",
                "Sem numero");
        Cliente c=new Cliente("jao","7777777",e);
        Cliente c1=new Cliente("Adamastor","777788",e1);
        Cliente c2=new Cliente("Capitão Planeta","7777777",e);
        colecaoCliente.add(c);
        colecaoCliente.add(c1);
        colecaoCliente.add(c2);
        // Colecao de Fornecedor
        Fornecedor forn=new Fornecedor("Pecas legais LTDA", "11.444.7770001-XX.", "pecalegais@pecas.com","(28)56768909", "Brasil sil sil");
        colecaoFornecedor.add(forn);
        // Colecao de Pecas
        Peca p=new Peca(001, "Repimboca", forn, 22);
        Peca p1=new Peca(000, "Repimboca Duas Polegadas", forn, 24);
        Peca p2=new Peca(003, "Parafuseta", forn, 33);
        colecaoPecas.add(p);
        colecaoPecas.add(p1);
        colecaoPecas.add(p2);
        //colecao Funcionarios
        Administrador f=new Administrador("Asdrubal", "admin","admin");
        Funcionario f1=new Funcionario("Asdrubal jr", "asdr","123");
        colecaoFuncionario.add(f);
        colecaoFuncionario.add(f1);
        // Colecao Consertos
        Conserto con= new Conserto("Problemas na tela","PC do milhão",c1, false,0);
        Conserto con1= new Conserto("Problemas no motor","Maquina de lavar brastur 1128x2",c2, true,123.50);
        colecaoConserto.add(con);
        colecaoConserto.add(con1);
    }
  
     public boolean lancaOrcamento(String cliente, double orcamento){
         Iterator<Cliente> i=colecaoCliente.iterator();
        Cliente p;
        Conserto c;
        while(i.hasNext()){
            p=i.next();
            if(cliente.equals(p.getNome())){
                Iterator<Conserto> it=colecaoConserto.iterator();
                while(i.hasNext()){
                    c=it.next();
                    if(cliente.equals(p.getNome())){
                      c.setOrcamento(orcamento);
                    return true;
                    }
                }
                
            }
        }
        return false;
     }
    
     public boolean autorizarConserto(String cliente){
         Iterator<Cliente> i=colecaoCliente.iterator();
        Cliente p;
        Conserto c;
        while(i.hasNext()){
            p=i.next();
            if(cliente.equals(p.getNome())){
                Iterator<Conserto> it=colecaoConserto.iterator();
                while(i.hasNext()){
                    c=it.next();
                    if(cliente.equals(p.getNome())){
                      c.setValidado(true);
                    return true;
                    }
                }
                
            }
        }
        return false;
     }
     
    public boolean excluiConserto(String cliente){
        Iterator<Cliente> i=colecaoCliente.iterator();
        Cliente p;
        Conserto c;
        while(i.hasNext()){
            p=i.next();
            if(cliente.equals(p.getNome())){
                Iterator<Conserto> it=colecaoConserto.iterator();
                while(i.hasNext()){
                    c=it.next();
                    if(cliente.equals(p.getNome())){
                    this.colecaoConserto.remove(c);
                    return true;
                    }
                }
                
            }
        }
        return false;
    }
    
     public void addFornecedor(Fornecedor f){
        colecaoFornecedor.add(f);
    }
     
     public void mostraFornecedor(){
        Iterator<Fornecedor> i=colecaoFornecedor.iterator();
        while(i.hasNext()){
            Fornecedor p=i.next();
            System.out.println(p);
            
        }
    }
     
    public Fornecedor alteraFornecedor(String nome){
        Iterator<Fornecedor> i=colecaoFornecedor.iterator();
        Fornecedor p;
        while(i.hasNext()){
            p=i.next();
            if(nome.equals(p.getNome())){
                
                this.colecaoFornecedor.remove(p);
                return p;
            }
            
        }
        return null;
        
    }
     
    public void addFuncionario(Funcionario f){
        colecaoFuncionario.add(f);
    }
   
     public boolean excluiFornecedor(String nome){
        Iterator<Fornecedor> i=colecaoFornecedor.iterator();
        Fornecedor p;
        while(i.hasNext()){
            p=i.next();
            if(nome.equals(p.getNome())){
                
                this.colecaoFornecedor.remove(p);
                return true;
            }
        }
        return false;
    }
    
    public void mostraFuncionarios(){
        Iterator<Funcionario> i=colecaoFuncionario.iterator();
        while(i.hasNext()){
            Funcionario p=i.next();
            System.out.println(p);
            
        }
    }
    
    public void addPeca(Peca peca){
        colecaoPecas.add(peca);
    }
    
    public void mostraPeca(){
        Iterator<Peca> i=colecaoPecas.iterator();
        while(i.hasNext()){
            Peca p=i.next();
            System.out.println(p);
            
        }
    }
    
    public Peca alteraPeca(String nome){
        Iterator<Peca> i=colecaoPecas.iterator();
        Peca p;
        while(i.hasNext()){
            p=i.next();
            if(nome.equals(p.getNome())){
                
                this.colecaoPecas.remove(p);
                return p;
            }
            
        }
        return null;
        
    }
    
    public boolean excluiPeca(String nome){
        Iterator<Peca> i=colecaoPecas.iterator();
        Peca p;
        while(i.hasNext()){
            p=i.next();
            if(nome.equals(p.getNome())){
                
                this.colecaoPecas.remove(p);
                return true;
            }
        }
        return false;
    }
    
    public boolean excluiFuncionario(String nome){
        Iterator<Funcionario> i=colecaoFuncionario.iterator();
        Funcionario p;
        while(i.hasNext()){
            p=i.next();
            if(nome.equals(p.getNome())){
                
                this.colecaoFuncionario.remove(p);
                return true;
            }
        }
        return false;
    }
    
    public Funcionario pesquisaNomeFuncionario(String chave){
        
        Iterator<Funcionario> i=colecaoFuncionario.iterator();
        while(i.hasNext()){
            Funcionario p=i.next();
            if(chave.equals(p.getNome()))
                return p;
        }
        return null;
    }
    
    public Funcionario pesquisaSenhaFuncionario(String chave){
        
        Iterator<Funcionario> i=colecaoFuncionario.iterator();
        while(i.hasNext()){
            Funcionario p=i.next();
            if(chave.equals(p.getSenha()))
                return p;
        }
        return null;
    }
   
    public Funcionario pesquisaLoginFuncionario(String chave){
        
        Iterator<Funcionario> i=colecaoFuncionario.iterator();
        while(i.hasNext()){
            Funcionario p=i.next();
            if(chave.equalsIgnoreCase(p.getLogin()))
                return p;
        }
        return null;
    }
   
   public boolean pesquisaCliente(String nome){
       Iterator<Cliente> i=colecaoCliente.iterator();
        while(i.hasNext()){
            Cliente p=i.next();
            if(nome.equalsIgnoreCase(p.getNome()))
                return true;}
        return false;
   }
}
